package co.edu.eam.iso.logger;

import java.io.File;
import java.io.FileWriter;
import java.util.Calendar;

public class Logger {

	private static final String NOMBRE_ARCHIVO_LOG = "log.txt";
	
	private static Logger instance;

	public void registrarLog(Throwable exception) {
		try {
			crearArchivoLog();
			File archivoLog = new File(getUrl());
			FileWriter escritor = new FileWriter(archivoLog, true);
			
			escritor.write("\n");
			escritor.write("Date: " + Calendar.getInstance().getTime() + "\n");
			
			StringBuilder sb = new StringBuilder("Message: " + exception.getMessage() +  "\n");
			sb.append("Trace:\n");
			for (StackTraceElement ste : exception.getStackTrace()) {
				sb.append(ste.toString() + "\n");
			}
			
			escritor.write(sb.toString());
			escritor.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	private void crearArchivoLog() throws Exception {
		// Valida si está creado el archivo de errores
		File archivoLog = new File(getUrl());

		if (!archivoLog.exists()) {
			FileWriter escritor = new FileWriter(archivoLog, false);
			escritor.close();
		}
	}
	
	private String getUrl() {
		StringBuilder url = new StringBuilder();
		url.append(System.getProperty("user.dir"));
		url.append(System.getProperty("file.separator"));
		url.append(NOMBRE_ARCHIVO_LOG);

		return url.toString();
	}

	public static Logger getInstance() {
		if (instance == null) {
			instance = new Logger();
		}
		return instance;
	}

}
